package com.softtown.modules.sys.service;


import com.softtown.common.service.BaseService;
import com.softtown.modules.sys.dto.SysCompDTO;
import com.softtown.modules.sys.entity.SysCompEntity;
import com.softtown.modules.sys.vo.SysCompanyVO;

import java.util.List;

/**
 * 公司
 *
 * @author Dingyayong
 */
public interface SysCompService extends BaseService<SysCompEntity> {

    /**
     * 获取公司列表
     *
     * @param
     * @return
     * @author Dingyayong
     * @date 2019-05-28 15:38
     */
    List<SysCompDTO> getListByIds();

    /**
     * 根据公司id获取信息
     * @param companyId
     * @return com.softtown.modules.sys.vo.SysCompanyVO
     * @Author fuming
     * @Date 2020/5/27 16:39
     */
    SysCompanyVO getCompanyInfo(Long companyId);

    /**
     * 根据公司名称获取公司信息
     *
     * @param campanyName
     * @return
     * @author Dingyayong
     * @date 2019/5/29 17:29
     */
    SysCompEntity getCompanyByCampanyName(String campanyName);

    /**
     * 描述 根据公司社会统一识别码获取公司信息
     *
     * @param uscc
     * @return
     * @author Dingyayong
     * @date 2019/5/29 17:29
     */
    SysCompEntity getCompanyByUscc(String uscc);

    /**
     * 注册公司
     * @param compDTO
     * @return void
     * @Author fuming
     * @Date 2020/5/27 16:39
     */
    void register(SysCompDTO compDTO);

    /**
     * 根据公司的名称获取该公司下的所有信息
     * @param companyName
     * @return com.softtown.modules.sys.entity.SysCompEntity
     * @Author fuming
     * @Date 2020/5/27 16:40
     */
    SysCompEntity getCompInfo(String companyName);

    /**
     * 公司修改信息
     * @param compDTO
     * @return void
     * @Author fuming
     * @Date 2020/5/27 16:40
     */
    void updateCompInfo(SysCompDTO compDTO);

    /**
     * 权限转让
     * @param compId
     * @param emplIdList
     * @return void
     * @Author fuming
     * @Date 2020/5/27 16:40
     */
    void transfer(Long compId,Long emplIdList);

    /**
     * 根据用户ID查找相应的公司ID和名称
     * @param userId
     * @return java.util.List<com.softtown.modules.sys.vo.SysCompanyVO>
     * @Author fuming
     * @Date 2020/5/27 16:41
     */
    List<SysCompanyVO> getCompNameListByUserId(Long userId);

    /**
     * 根据公司名称获取公司信息
     *
     * @param id
     * @return
     * @author Dingyayong
     * @date 2019/5/29 17:29
     */
    SysCompEntity getCompanyById(Long id);
}
